<script>
   /*
            三、发布抖音视频并挂载小程序锚点

                        1、本页目标

                              实现在小程序发布抖音视频并挂载小程序锚点

                        2、前置条件

                                <1>、小程序内拍抖音入口的展示和抖音视频的发布无需额外权限。

                                <2>、如果希望能够在最终短视频上挂载小程序，满足以下任意一条件即可挂载小程序：

                                        ①、小程序拥有自主挂载权限；

                                        ②、当前账号是与小程序绑定成功的抖音号且小程序已经获得短视频UGC（用户创作）挂载权限


                        3、发布抖音视频并挂载小程序锚点流程

                                图示：
                                    https://sf1-cdn-tos.douyinstatic.com/obj/microapp/frontend/docs/images/img1716280498572

                        
                        4、小程序内拍视频挂载锚点

                                            <1>、入口

                                                      发布抖音视频入口包括 ：
                                                            
                                                                [开发者自定义发布视频Button按钮]  （https://developer.open-douyin.com/docs/resource/zh-CN/mini-app/develop/component/list/button）
                                                                
                                                                  和 
                                                                [更多面板--拍抖音]

                                                      ①、开发者自定义发布视频 Button 按钮

                                                                  <button open-type="uploadDouyinVideo">发布抖音视频</button>

                                                      ②、更多面板--拍抖音

                                                                  满足以下任意一个条件时，更多面板将展示 [拍抖音] 按钮：

                                                                    1、页面注册了 onShareAppMessage 方法：

                                                                    2、页面注册了 onUploadDouyinVideo 方法，同时需在全局 app.json 配置中进行响应设置，参考：

                                                                            {
                                                                              "publishVideoHookPriorityList": ["onUploadDouyinVideo", "onShareAppMessage"]
                                                                            }

                                                                            图示：

                                                                                  https://sf1-cdn-tos.douyinstatic.com/obj/microapp/frontend/docs/images/img1716280499166

                                                                    3、注定调用 tt.hideShareMenu 控制展示更多面板中的 [拍抖音]按钮。


                                            <2>、视频来源

                                                        发布抖音视频包括 [拉起拍摄器] 和 [上传本地视频到抖音] 两种方式

                                                            ①、「拉起拍摄器」会拉起抖音视频拍摄器，拍摄完成后即可发布。

                                                            ②、「上传本地视频到抖音」直接使用本地的视频进行发布。


                        5、抖音内拍视频中挂载锚点

                                           <1>、操作路径

                                                    抖音视频拍摄器 > 拍摄视频 > 视频发布页 > 添加小程序 > 将该小程序页面添加到视频。

                                                    图示：

                                                        https://sf1-cdn-tos.douyinstatic.com/obj/microapp/frontend/docs/images/img1716280499880


                                           <2>、代码实现

                                                      ①、第一步：配置 app.json

                                                                  在 app.json 中配置优先使用  onUploadDouyinVideo 方法，配置如下：
                                                                        
                                                                          {
                                                                            "publishVideoHookPriorityList": ["onUploadDouyinVideo", "onShareAppMessage"]
                                                                          }

                                                      ②、第二步 实现 onUploadDouyinVideo 方法

                                                                  完成此步骤后，即可实现「发布抖音视频」和「主动挂载锚点」的功能，也可以进行达人挂载。

                                                                          Page({
                                                                            data: {},
                                                                            async onUploadDouyinVideo(uploadOptions) {
                                                                              return {
                                                                                success: function (res) {
                                                                                  // 只有当发布成功且挂载成功时，success 回调才会有 videoId
                                                                                  console.log("success: ", res);
                                                                                },
                                                                                fail: function (res) {
                                                                                  console.log("fail: ", res);
                                                                                },
                                                                                complete: function (res) {
                                                                                  console.log("complete: ", res);
                                                                                },
                                                                              };
                                                                            },
                                                                          });

                                                      ③、第三步  添加自定义发布视频 button 按钮
                                                        
                                                                  <button open-type="uploadDouyinVideo">发布抖音视频</button>

                                                      ④、第四步 决定发布抖音视频方式

                                                                  onUploadDouyinVideo 方法中不设置 videoPath 参数，会拉起抖音视频拍摄器； 设置 videoPath ,会上传本地视频到抖音。

                                                                  1、系统会拉起拍摄器

                                                                          按照现有的 1、2、3 步骤实现完成时 （即不设置 videoPath参数），系统可以直接拉起拍摄器

                                                                  2、上传本事视频到抖音。

                                                                          在页面的 onUploadDouyinVideo 方法中，传入由 tt.chooseVideo 获取的 videoPath 参数。

                                                                                  <button bindtap="chooseVideo">设置videoPath</button>
                                                                                  <button open-type="uploadDouyinVideo">发布抖音视频</button>

                                                                                  Page({
                                                                                    data: { videoPath: undefined },
                                                                                    onUploadDouyinVideo(uploadOptions) {
                                                                                      return {
                                                                                        videoPath: this.data.videoPath,
                                                                                        success: function (res) {
                                                                                          // 只有当发布成功且挂载成功时，success 回调才会有 videoId
                                                                                          console.log("success: ", res);
                                                                                        },
                                                                                        fail: function (res) {
                                                                                          console.log("fail: ", res);
                                                                                        },
                                                                                        complete: function (res) {
                                                                                          console.log("complete: ", res);
                                                                                        },
                                                                                      };
                                                                                    },
                                                                                    chooseVideo() {
                                                                                      tt.chooseVideo({
                                                                                        sourceType: ["album", "camera"],
                                                                                        compressed: true,
                                                                                        success: (res) => {
                                                                                          this.setData({ videoPath: res.tempFilePath });
                                                                                        },
                                                                                        fail: (err) => {
                                                                                          let errType = err.errMsg.includes("chooseVideo:fail cancel")
                                                                                            ? "取消选择"
                                                                                            : "选择失败";
                                                                                          tt.showModal({
                                                                                            title: errType,
                                                                                            content: err.errMsg,
                                                                                            showCancel: false,
                                                                                          });
                                                                                        },
                                                                                      });
                                                                                    },

                                            <3>、Demo 工程

                                                      开发者工具中预览   （https://developer.open-douyin.com/ide/minicode/i2QSFQ7Y）

                                            
                                            <4>、获取用户在此路径下发布视频的 videoId

                                                      1、获取 videoId 的条件

                                                              ①、用户视频已经发布成功

                                                              ②、小程序锚点挂载成功

                                                      2、videoId 的应用

                                                            例如：  从小程序内跳转到特定的抖音视频，可参考相关接口  （https://developer.open-douyin.com/docs/resource/zh-CN/mini-app/develop/component/open-capacity/button-navigate-to-video-view）

                                                      3、如何判断挂载成功了

                                                              https://sf1-cdn-tos.douyinstatic.com/obj/microapp/frontend/docs/images/img1716280500757

                                                              https://sf1-cdn-tos.douyinstatic.com/obj/microapp/frontend/docs/images/img1716280498610

        */
</script>